An application may send and receive messages over a network, allocating memory as needed through memory registration. Memory registration causes an operating system to allocate memory for the application and provide address translation for the network's interface card (NIC), reserving the memory until the memory is no longer needed by the application (i.e., when the allocated memory is de-registered).
Particularly, in high-speed networks (e.g., Infiniband, Myrinet), memory registration and de-registration operations are slow compared to other network operations, such as high-speed data transfers. Therefore, a caching scheme may be implemented to increase network performance by reducing the number of memory registration and de-registration operations that would be otherwise necessary.
In certain operating systems (e.g., the Microsoft® Windows operating system), in order to take advantage of the caching, the operating system has to rebuild the target application, by explicitly importing each external variable and bounding each variable to the dynamic library that declares that variable. Since a substantial amount of overhead is associated with rebuilding the application, the performance benefits associated with the above-noted caching scheme are effectively rendered worthless.
For the above reasons, systems and methods are needed that can facilitate a memory registration caching scheme that automatically monitors memory management in an operating system without having to rebuild the target application.
Features, elements, and aspects of the invention that are referenced by the same numerals in different figures represent the same, equivalent, or similar features, elements, or aspects, in accordance with one or more embodiments.